package com.fjwt.gz.mgr.ctrl.activity;

import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fjwt.gz.core.model.ApiRes;
import com.fjwt.gz.db.dto.ActivityTemplateDTO;
import com.fjwt.gz.db.entity.ActivityTemplateEntity;
import com.fjwt.gz.db.vo.ActivityTemplateVO;
import com.fjwt.gz.mgr.ctrl.CommonCtrl;
import com.fjwt.gz.service.impl.ActivityTemplateService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;


/**
 * 活动模板管理 Controller
 *
 */
@RestController
@Slf4j
@RequestMapping("/api/activity/template")
public class ActivityTemplateController extends CommonCtrl {

    @Autowired
    private ActivityTemplateService activityTemplateService;

    /**
     * 查询活动模板列表
     * @return
     */
    @PreAuthorize("hasAnyAuthority('ENT_ACTIVITY_TEMPLATE_INFO')")
    @GetMapping
    public ApiRes list() {
        ActivityTemplateDTO activityTemplateDTO = getObject(ActivityTemplateDTO.class);
        log.info("pc端查询活动模板列表，请求地址：/api/activity/template，请求参数：{}", JSONUtil.toJsonStr(activityTemplateDTO));
        IPage<ActivityTemplateVO> page = activityTemplateService.queryList(getIPage(true), activityTemplateDTO);
        log.info("pc端查询活动模板列表，请求地址：/api/activity/template，返回结果：{}", JSONUtil.toJsonStr(page));
        return ApiRes.page(page);
    }

    /**
     * 新增活动模板
     * @return
     *
     */
    @PreAuthorize("hasAnyAuthority('ENT_ACTIVITY_TEMPLATE_INFO_ADD')")
    @PostMapping
    public ApiRes add() {
        ActivityTemplateDTO dto = getObject(ActivityTemplateDTO.class);
        dto.setCreatedUid(getCurrentUser().getSysUserId());
        log.info("pc端新增活动模板，请求地址：/api/activity/template，请求参数：{}", JSONUtil.toJsonStr(dto));
        activityTemplateService.saveActivityTemplate(dto);
        return ApiRes.ok();
    }

    /**
     * 修改活动模板
     * @return
     */
    @PreAuthorize("hasAnyAuthority('ENT_ACTIVITY_TEMPLATE_INFO_EDIT')")
    @PutMapping
    public ApiRes update() {
        ActivityTemplateDTO dto = getObject(ActivityTemplateDTO.class);
        log.info("pc端修改活动模板，请求地址：/api/activity/template，请求参数：{}", JSONUtil.toJsonStr(dto));
        activityTemplateService.updateActivityTemplate(dto);
        return ApiRes.ok();
    }

    /**
     * 删除活动模板
     * @return
     */
    @PreAuthorize("hasAnyAuthority('ENT_ACTIVITY_TEMPLATE_INFO_DEL')")
    @DeleteMapping
    public ApiRes delete() {
        ActivityTemplateDTO dto = getObject(ActivityTemplateDTO.class);
        log.info("pc端删除活动模板，请求地址：/api/activity/template，请求参数：{}", JSONUtil.toJsonStr(dto));
        activityTemplateService.deleteActivityTemplate(dto.getActivityTemplateNo());
        return ApiRes.ok();
    }


}
